/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package datos;
import java.util.logging.Level;
import java.util.logging.Logger;
import negocio.*;

/**
 *
 * @author Esteban
 */
public class Sp_Ejecutan extends Manejador_BaseDatos
{
    // <editor-fold defaultstate="collapsed" desc="Nombres STORES PROCEDURES">
	private static Sp_Ejecutan _Instancia;
        private String SP_InsertarCliente = "PA_InsertarCliente(?,?,?,?,?)";
        private String SP_InsertarProducto = "PA_InsertarProducto(?,?,?,?,?)";
        private String SP_ModificarCliente = "PA_ModificarCliente(?,?,?,?,?,?)";
        private String SP_EliminarCliente = "PA_EliminarCliente(?)";
        private String SP_InsertarVenta = "PA_InsertarVenta(?,?,?)";
        private String SP_ModificarProducto = "PA_ModificarProducto(?,?,?,?,?,?)";
        private String SP_InsertarDetalleFactura = "PA_InsertarDetalleFactura(?,?,?)";
        

    // </editor-fold>

    private Sp_Ejecutan(){}
        
    public static Sp_Ejecutan getInstance()
    {
       if (_Instancia == null)
       {
           _Instancia = new Sp_Ejecutan();
       }
       return _Instancia;
    }
    
    public boolean SP_InsertarCliente(Cliente cliente)
    {
        
        try {
        //Se realiza la conexion
        
        conectarBaseDatos();

        System.out.println("Esta llegando hasta capa de datos 3");
        //Creacion de parametros para insertar un nuevo cliente
        Object[] parametrosActivo = new Object[5];

        parametrosActivo[0] = new String(cliente.getNombre());
        parametrosActivo[1] = new String(cliente.getApellidos());
        parametrosActivo[2] = new String(cliente.getTelefono());
        parametrosActivo[3] = new String(cliente.getCorreo());
        parametrosActivo[4] = new String(cliente.getDireccion());
        
        //LLamar al SP que inserta al cliente creado
        spNoRetornan(SP_InsertarCliente, parametrosActivo);

        //Se cierra la conexion con la base de datos
        cerrarConexion();

        return true;

    } catch (Exception ex) {
        Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    }

    }//Fin Insertar Cliente
    

    public boolean SP_ModificarCliente(Cliente cliente, String numero){
        try {
            //Se realiza la conexion
        
            conectarBaseDatos();

            //Creacion de parametros para insertar un nuevo cliente
            Object[] parametrosActivo = new Object[6];

            parametrosActivo[0] = cliente.getNombre();
            parametrosActivo[1] = cliente.getApellidos();
            parametrosActivo[2] = cliente.getTelefono();
            parametrosActivo[3] = cliente.getCorreo();
            parametrosActivo[4] = cliente.getDireccion();
            parametrosActivo[5] = numero;
            
            //LLamar al SP que inserta al cliente creado
            spNoRetornan(SP_ModificarCliente, parametrosActivo);

           //Se cierra la conexion con la base de datos
            cerrarConexion();

            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
 
    } //fin modificar clientes

    public boolean SP_EliminarCliente(String numero){
        try {
            //Se realiza la conexion
            conectarBaseDatos();

            //Creacion de parametros para insertar un nuevo cliente
            Object[] parametrosActivo = new Object[1];
            parametrosActivo[0] = numero;
            //LLamar al SP que elimina al cliente
            spNoRetornan(SP_EliminarCliente, parametrosActivo);

           //Se cierra la conexion con la base de datos
            cerrarConexion();
            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
 
    } //fin modificar clientes
    

    public boolean SP_InsertarProducto(Producto producto)
    {
        
        try {
            //Se realiza la conexion

            conectarBaseDatos();

            System.out.println("Esta llegando hasta capa de datos 3");
            //Creacion de parametros para insertar un nuevo producto
            Object[] parametrosActivo = new Object[5];

            parametrosActivo[0] = producto.getNombre();
            parametrosActivo[1] = producto.getPrecio();
            parametrosActivo[2] = producto.getRutaImagen();
            parametrosActivo[3] = producto.getTipoProducto();
            parametrosActivo[4] = producto.getDescripcion();

            //LLamar al SP que inserta al producto creado
            spNoRetornan(SP_InsertarProducto, parametrosActivo);

            //Se cierra la conexion con la base de datos
            cerrarConexion();

            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

    }//Fin Insertar producto
    
    public boolean SP_ModificarProducto(Producto producto)
    {
        
        try {
            //Se realiza la conexion

            conectarBaseDatos();

            System.out.println("Esta llegando hasta capa de datos 3");
            //Creacion de parametros para Modificar un producto
            Object[] parametrosActivo = new Object[6];

            parametrosActivo[0] = producto.getNombre();
            parametrosActivo[1] = producto.getPrecio();
            parametrosActivo[2] = producto.getRutaImagen();
            parametrosActivo[3] = producto.getTipoProducto();
            parametrosActivo[4] = producto.getIdProducto();
            parametrosActivo[5] = producto.getDescripcion();

            //LLamar al SP que Modifica al producto creado
            spNoRetornan(SP_ModificarProducto, parametrosActivo);

            //Se cierra la conexion con la base de datos
            cerrarConexion();

            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

    }//Fin Modificar producto
    
    public boolean SP_InsertarVenta(Factura factura)
    {
        try {
            //Se realiza la conexion
            conectarBaseDatos();

            System.out.println("Esta llegando hasta capa de datos 3");
            //Creacion de parametros para Modificar un producto
            Object[] parametrosActivo = new Object[3];

            parametrosActivo[0] = factura.getIdCliente();
            parametrosActivo[1] = factura.getTotalFactura();
            parametrosActivo[2] = factura.getTotalPagado();

            //LLamar al SP que Modifica al producto creado
            spNoRetornan(SP_InsertarVenta, parametrosActivo);

            //Se cierra la conexion con la base de datos
            cerrarConexion();
            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorClientes.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }//Fin Modificar producto
    
    public boolean SP_InsertarDetalleFactura(DetalleFactura detalleFactura)
    {
        try {
            //Se realiza la conexion
            conectarBaseDatos();

            System.out.println("Esta llegando hasta capa de datos 3");
            //Creacion de parametros para Modificar un producto
            Object[] parametrosActivo = new Object[3];

            parametrosActivo[0] = detalleFactura.getIdFactura();
            parametrosActivo[1] = detalleFactura.getProducto();
            parametrosActivo[2] = detalleFactura.getCantidad();

            //LLamar al SP que Modifica al producto creado
            spNoRetornan(SP_InsertarDetalleFactura, parametrosActivo);

            //Se cierra la conexion con la base de datos
            cerrarConexion();
            return true;

        } catch (Exception ex) {
            Logger.getLogger(ControladorDetalleFactura.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }//Fin Modificar producto
}
